package com.xinsoft.constant;

import javax.annotation.PostConstruct;
import javax.validation.constraints.NotNull;

/**
 * @author zhangchangfu
 * @date 2021/2/8 0008 上午 11:21
 */
public interface Const {
    /**
     * token secret
     */
    String SECRET_KEY = "ctgStw_dragon@d4a1ccc71ER45GHHdcfdf2";

    /**
     * 启用状态-正常
     */
    Integer USER_STATUS_NORMAL = 1;

    /**
     * 审核状态-未审核/禁用
     */
    Integer AUDIT_STATUS_BAN = 0;

    /**
     * 计划状态  0-未提交暂存
     */
    Integer PLAN_STATUS_WAIT = 0;

    /**
     * 计划状态   1-已提交
     */
    Integer PLAN_STATUS_NORMAL = 1;

    /**
     * 计划状态   2-已完成
     */
    Integer PLAN_STATUS_OVER = 2;

    /**
     * 计划状态  3-已作废
     */
    Integer PLAN_STATUS_FAIL = 3;

    /**
     * 保养工单状态 0-未提交暂存
     */
    Integer UPKEEP_STATUS_TEMPSAVE = 0;

    /**
     * 保养工单状态 1-待处理
     */
    Integer UPKEEP_STATUS_WAIT = 1;

    /**
     * 保养工单状态 2-已关闭
     */
    Integer UPKEEP_STATUS_CLOSE = 2;

    /**
     * 保养工单状态 3-超时未处理
     */
    Integer UPKEEP_STATUS_TIMEOUT = 3;

    /**
     * 保养工单状态 4-已完成
     */
    Integer UPKEEP_STATUS_OVER = 4;

    /**
     * 删除标志-正常
     */
    Integer DEL_FLAG_NORMAL = 0;

    /**
     * 审核状态-正常
     */
    Integer AUDIT_STATUS_NORMAL = 1;

    /**
     * 审核状态-未审核
     */
    Integer AUDIT_STATUS_WAIT = 0;

    /**
     * 部门或者人员1-部门 2-人员
     */
    Integer NOTICE_DEPT = 1;

    /**
     * 部门或者人员1-部门 2-人员
     */
    Integer NOTICE_USER = 2;

    /**
     * UTF-8 字符集
     */
    public static final String UTF8 = "UTF-8";

    /**
     * GBK 字符集
     */
    public static final String GBK = "GBK";

    /**
     * 删除标志-已删除
     */
    Integer DEL_FLAG_DO = 0;

    /**
     * 当前记录起始索引
     */
    String PAGE_NUM = "pageNum";

    /**
     * 每页显示记录数
     */
    String PAGE_SIZE = "pageSize";

    /**
     * 默认PID
     */
    String DEFAULT_PID = "0";

    /**
     * 超管id
     */
    Integer ADMIN_UID = 1;

    /**
     * 节点默认序号
     */
    Integer NODE_DEFAULT_SORT = 1;

    /**
     * 节点偏移量
     */
    Integer NODE_OFFSET = 1;

    /**
     * 仓库前缀
     */
    String WAREHOUSE_CODE = "CK000";

    /**
     * 库位前缀
     */
    String WAREHOUSE_ITEM_CODE = "KW000";

    /**
     * 默认公司id
     */
    Integer DEFAULT_COMPANY_PID = 1;

    /**
     * 排序列
     */
    String ORDER_BY_COLUMN = "orderByColumn";

    /**
     * 排序的方向 "desc" 或者 "asc".
     */
    String IS_ASC = "isAsc";

    Integer Y = 1;
    Integer N = 0;

    /**
     * 重置密码
     */
    String RESET_PASSWORD = "123456a";

    /**
     * 区划树
     */
    String REGION_TREE = "region_tree";

    /**
     * 变动类型（0减少，1增加）
     */
    interface ChangeType {
        /**
         * 减少
         */
        Integer SUBTRACT = 0;
        /**
         * 增加
         */
        Integer ADD = 1;
    }

    /**
     * 来源单据 1、采购入库 2、采购退货 3-销售出库 4-销售退货  5-生产领用 6-生产退料  7-委外发料  8-委外退料  9-委外入库 10生产入库  11其他入库  12其他出库  13 移库移入  14移库移出 15盘点盘盈 16 盘点盘亏
     */
    interface SourceBillType{
        Integer CGRK = 1;
        Integer CGTH = 2;
        Integer XSCK = 3;
        Integer XSTH = 4;
        Integer SCLY = 5;
        Integer SCTL = 6;
        Integer WWFL = 7;
        Integer WWTL = 8;
        Integer WWRK = 9;
        Integer SCRK = 10;
        Integer QTRK = 11;
        Integer QTCK = 12;
        Integer YKYR = 13;
        Integer YKYC = 14;
        Integer PDPY = 15;
        Integer PDPK = 16;
    }

    /**
     * 客户等级
     */
    interface GradeCode {
        String A = "A";
        String B = "B";
        String C = "C";
        String D = "D";
        String E = "E";
    }

    /**
     * 审批类型
     */
    interface ApproveType {
        Integer XSDD = 1;  //销售订单
        Integer FHTZ = 2;  //发货通知
        Integer XSCK = 3;  //销售出库
        Integer XSTH = 4;  //销售退货
        Integer CGJH = 5;  //采购计划
        Integer CGDD = 6;  //采购订单
        Integer CGRK = 7;  //采购入库
        Integer CGTH = 8;  //采购退货
        Integer SCRK = 9;  //生产入库
        Integer QTRK = 10; //其他入库
        Integer QTCK = 11; //其他出库
        Integer SCLY = 12; //生产领用
        Integer SCTL = 13; //生产退料
        /**
         * 收料通知
         */
        Integer SLTZ = 14;
        /**
         * 委外合同
         */
        Integer WWHT = 15;
    }

    /**
     * 审批类型
     */
    interface ApproveTypeName {
        String XSDD = "销售订单";  //销售订单
        String FHTZ = "发货通知";  //发货通知
        String XSCK = "销售出库";  //销售出库
        String XSTH = "销售退货";  //销售退货
        String CGJH = "采购计划";  //采购计划
        String CGDD = "采购订单";  //采购订单
        String CGRK = "采购入库";  //采购入库
        String CGTH = "采购退货";  //采购退货
        String SCRK = "生产入库";  //生产入库
        String QTRK = "其他入库"; //其他入库
        String QTCK = "其他出库"; //其他出库
        String SCLY = "生产领用"; //生产领用
        String SCTL = "生产退料"; //生产退料

        /**
         * 收料通知
         */
        String SLTZ = "收料通知";
        /**
         * 委外合同
         */
        String WWHT = "委外合同";
    }

    /**
     * 审批结果 0-驳回  1-同意  2-转派 3-未处理
     */
    interface ApproveResult {
        Integer bohui = 0;  //驳回
        Integer tongyi = 1;  //同意
        Integer zhuanpai = 2;  //转派
        Integer weichuli = 3;  //未处理
    }

    /**
     * 派工单状态 1-待产  2-开工  3-挂起  4-结案
     */
    interface PlanType {
        Integer dai_chan = 1;  //待产
        Integer kai_gong = 2;  //开工
        Integer gua_qi = 3;  //挂起
        Integer jie_an = 4;  //结案
        Integer wan_gong = 5;  //完工
    }

    /**
     * 文件类型
     */
    interface FileType {
        // 数据库备份类型，自由扩展
        Integer BACK_FILE = 1;
        // 基础业务类型文件
        Integer BASIC_FILE = 2;
        // 导入业务类型文件
        Integer IMPORT_ERR_FILE = 3;
        // 报工图片
        Integer MES_REPORT = 4;
    }

    /**
     * 对应表 1-设备表 2-设备故障  3-设备维修 4-设备验收 5-任务
     */
    interface  DeviceRefType{
        Integer DEVICE_FILE = 1;
        Integer DEVICE_BREAKDOWN_FILE = 2;
        Integer DEVICE_REPAIR_FILE = 3;
        Integer DEVICE_APPROVE_FILE = 4;
        /**
         * 任务表
         */
        Integer TASK_FILE = 5;
        /**
         * 巡检标准
         */
        Integer PATROL_BASIC = 5;
    }

    /**
     * 维修状态 0-暂存 1-已提交待处理 2-已处理待验收 3-已验收 4-超期未处理
     */
    interface  RepairStatus{
        //0-暂存
        Integer STAGING = 0;
        //1-已提交待处理
        Integer SUBMIT = 1;
        //2-已处理待验收
        Integer PROCESSED_ACCEPTANCE = 2;
        //3-已验收
        Integer ACCEPTED = 3;
        //4-超期未处理
        Integer OVERDUE = 4;
        //4-终止
        Integer REPORT_TERMINATED = 5;

    }


    interface  RepairRecordStatus{

        // 处理中
        Integer PROCESSING = 1;
        //已转派
        Integer TRANSFERRED = 2;
        //已终止
        Integer TERMINATED = 3;
        //已完成
        Integer COMPLETED = 4;
        //已回退
        Integer FALLBACK = 5;
        //已通过
        Integer PASSED = 6;
    }



    /**
     * 验收结果
     */
    interface  AcceptanceResult{

        // 通过
        Integer RESULT_PASS = 1;
        //不通过
        Integer RESULT_UNPASS = 2;
        //待评价
        Integer NO_EVALUATED = 3;
    }



    /**
     * 文件类型对应docker读取url
     */
    interface FileTypeProxyUrl {
        // 数据库备份类型
        String BACK_FILE_URL = "db-back";
        // 数据库备份类型
        String IMPORT_ERROR_FILE_URL = "import-error";
        // 基础业务文件类型
        String BASIC_FILE_URL = "gyhl-file";
    }

    /**
     * 通用实体类字段常量
     */
    public interface Field {
        String CREATE_TIME = "createTime";
        String CREATE_USER_ID = "createBy";
        String UPDATE_TIME = "updateTime";
        String UPDATE_USER_ID = "updateBy";
        String DEL_FLAG = "doDelete";

        String BEGIN_TIME = "beginTime";
        String END_TIME = "endTime";

    }

    int[] RETURN_FINISHED = {3, 6, 8, 9};

    String THIRD_ACCOUNT = "88888888";

    String DEFAULT_PASSWORD = "123456";

    interface ACTION {
        // 物料审核
        Integer MATERIAL_AUDIT = 1;
        // 设备预警
        Integer DEVICE_WARN =12;

        /**
         * 物料超时提醒
         */
        Integer MATERIAL_TIMEOUT_ALERT = 21;
        // 设备维修记录
        Integer MAINTENANCE_RECORDS =22;
        // 设备维修记录
        Integer MATERIAL_STOCK =25;
    }

    interface DO_FIRST_INSPECTION {
        // 物料审核
        Integer MATERIAL_AUDIT = 1;
        // 设备预警
        Integer DEVICE_WARN =12;
    }


    interface DEVICE_STATUS {
        // 正常运行
        Integer NORMAL = 10387;
        // 带病运行
        Integer WARNING =10388;
        // 停机待修
        Integer WAIT = 10389;
        // 停用报废
        Integer DEAD =10390;
    }

    interface DOCUMENT_QUA_TYPE{
//        对应单据类型 1-检验项目 2-检验方案 3-质量巡检
        // 检验项目
        Integer CHECK_ITEM = 1;
        // 检验方案
        Integer CHECK_PLAN = 2;
        // 质量巡检-拍照签到附件
        Integer QUA_PATROL = 3;
        // 质量巡检-巡检结果附件
        Integer QUA_PATROL_RESULT = 4;

        // 质量管理-质量检验
        Integer QUA_INSPECTION = 5;
    }


    interface DOCUMENT_OA_TYPE{
        // 对应单据类型 1-新闻公告
        Integer CUS_NEWS = 1;
    }


    interface QUA_TYPE {
        // 来料检验
        Integer QUA_LLJY = 10629;

        // 产品检验
        Integer QUA_CPJY = 10632;

        // 发货检验
        Integer QUA_FHJY = 10635;

        // 首样检验
        Integer QUA_SYJY = 10794;
    }

    // 单据id
    interface DOCUMENT_ID {
        // 客户管理
        Integer CLIENT_DOCUMENT = 10721;
        //保养计划
        Integer UPKEEP_PLAN_DOCUMENT = 10725;
        // 保养执行
        Integer UPKEEP_ORDER_DOCUMENT = 10726;
        // 巡检计划
        Integer PATROL_PLAN_DOCUMENT = 10727;
        // 巡检执行
        Integer PATROL_ORDER_DOCUMENT = 10728;
        // 故障报修
        Integer DEVICE_BREAKDOWN_DOCUMENT = 10729;
        // 工位管理
        Integer MES_STATION_DOCUMENT = 10731;
        // 质量巡检计划
        Integer QUA_PATROL_PLAN_DOCUMENT = 10753;
        // 质量巡检执行
        Integer QUA_PATROL_ORDER_DOCUMENT = 10754;
        // BOM配置
        Integer MES_BOM_DOCUMENT = 10737;

        // 投料计划
        Integer MES_FEEDING_PLAN_DOCUMENT = 10738;

        // 生产计划
        Integer MES_PRODUCE_PLAN_DOCUMENT = 10304;

        // 工序计划
        Integer MES_PROCESS_PLAN_DOCUMENT = 10791;

        /**
         * 销售订单
         */
        Integer SALE_DOCUMENT = 10732;

        /**
         * 发货通知
         */
        Integer SALE_NOTICE_DOCUMENT = 10733;

        /**
         * 销售出库
         */
        Integer SALE_OUTSTOCK_DOCUMENT = 10735;

        /**
         * 销售退货
         */
        Integer SALE_RETURN_DOCUMENT = 10736;

        /**
         * 采购计划
         */
        Integer PURCHASE_PLAN_DOCUMENT = 10745;

        /**
         * 派工单
         */
        Integer MES_DISPATCH = 10822;

        /**
         * 派工单
         */
        Integer MES_REPORT = 10884;

        /**
         * 采购订单
         */
        Integer PURCHASE_DOCUMENT = 10744;

        /**
         * 收料通知
         */
        Integer PURCHASE_NOTICE_DOCUMENT = 10755;
        /**
         * 采购入库
         */
        Integer PURCHASE_INSTOCK_DOCUMENT = 10751;
        /**
         * 采购退货
         */
        Integer PURCHASE_RETURN_DOCUMENT = 10752;

        /**
         * 日常事件
         */
        Integer EVERYDAY_INCIDENTS_DOCUMENT = 10746;
        /**
         * 生产事件
         */
        Integer PRODUCTION_EVENTS_DOCUMENT = 10747;
        /**
         * 质量事件
         */
        Integer QUALITY_EVENTS_DOCUMENT = 10748;
        /**
         * 8D报告
         */
        Integer REPORT_DOCUMENT = 10749;


        /**
         * 生产入库
         */
        Integer PRODUCE_INSTOCK_DOCUMENT = 10763;
        /**
         * 生产领用
         */
        Integer PRODUCE_CONSUMING_DOCUMENT = 10596;
        /**
         * 生产退料
         */
        Integer PRODUCE_RETURN_DOCUMENT = 10764;
        /**
         * 盘点方案
         */
        Integer INVENTORY_PLAN_DOCUMENT = 10765;
        /**
         * 盘盈
         */
        Integer INVENTORY_PROFIT_DOCUMENT = 10766;
        /**
         * 盘亏
         */
        Integer INVENTORY_LOSS_DOCUMENT = 10767;
        /**
         * 盘盈入库
         */
        Integer INVENTORY_PROFIT_INSTOCK_DOCUMENT = 10768;
        /**
         * 盘亏出库
         */
        Integer INVENTORY_LOSS_OUTSTOCK_DOCUMENT = 10769;
        /**
         * 库存调拨
         */
        Integer STOCK_MOVE_DOCUMENT = 10770;
        /**
         * 调拨入库
         */
        Integer MOVE_INSTOCK_DOCUMENT = 10771;
        /**
         * 调拨出库
         */
        Integer MOVE_OUTSTOCK_DOCUMENT = 10772;
        /**
         * 库存
         */
        Integer STOCK_DOCUMENT = 10774;


        // 质量检验—不良原因
        Integer QUA_CAUSE_DOCUMENT = 10775;

        // 来料检验
        Integer QUA_LLJY_DOCUMENT = 10777;

        // 产品检验
        Integer QUA_CPJY_DOCUMENT = 10778;

        // 发货检验
        Integer QUA_FHJY_DOCUMENT = 10779;

        // 项目信息
        Integer SYS_PJ_DOCUMENT = 10786;

        // 首样检验
        Integer SYS_SYJY_DOCUMENT = 10796;

        /**
         * 委外合同
         */
        Integer OUTSOURCING_CONTRACT_DOCUMENT = 10780;
        /**
         * 委外投料
         */
        Integer OUTSOURCING_FEEDING_DOCUMENT = 10781;
        /**
         * 委外出库
         */
        Integer OUTSOURCING_OUTSTOCK_DOCUMENT = 10782;
        /**
         * 委外收料通知
         */
        Integer OUTSOURCING_NOTICE_DOCUMENT = 10783;
        /**
         * 委外入库
         */
        Integer OUTSOURCING_INSTOCK_DOCUMENT = 10784;
        /**
         * 委外退料
         */
        Integer OUTSOURCING_RETURN_DOCUMENT = 10785;

        /**
         * 生产领用申请
         */
        Integer PRODUCE_CONSUMING_APPLY_DOCUMENT = 10786;
        /**
         * 委外领用申请
         */
        Integer OUTSOURCING_CONSUMING_APPLY_DOCUMENT = 10788;
        /**
         * 其他领用申请
         */
        Integer OTHER_CONSUMING_APPLY_DOCUMENT = 10789;

        /**
         * 退料申请
         */
        Integer MATERIAL_RETURN_APPLY_DOCUMENT = 10816;

        /**
         * 检验方案
         */
        Integer CHECK_WAYS_DOCUMENT = 10823;

        /**
         * 检验项目
         */
        Integer CHECK_PROJECT_DOCUMENT = 10740;
    }


    /**
     * 审批状态（默认0暂存, 1:已提交(审批中), 2:驳回, 3:审核通过）
     */
    interface ApproveStatus {

        /**
         * 暂存
         */
        Integer STAGING = 0;

        /**
         * 已提交(审批中)
         */
        Integer SUBMIT = 1;
        /**
         * 驳回
         */
        Integer OVERRULE = 2;
        /**
         * 审核通过
         */
        Integer APPROVED = 3;
    }


    /**
     * 待推送单据类型
     */
    interface BillType {
        /**
         * 生产领用出库
         */
        Integer SCLYCK = 10883;

        /**
         * 委外领用出库
         */
        Integer WWLYCK = 10885;

        /**
         * 销售出库
         */
        Integer XSCK = 10886;
    }

    /**
     * 任务状态：0暂存  1待处理  2待验收  3已验收
     */
    interface TaskStatus {

        /**
         * 暂存
         */
        Integer STAGING = 0;

        /**
         * 待处理
         */
        Integer PENDING = 1;

        /**
         * 待验收
         */
        Integer WAIT_ACCEPTANCE = 2;

        /**
         * 已验收
         */
        Integer ACCEPTED = 3;
    }

    /**
     * 任务状态 1-处理中 2-已转派 3-已终止 4-已完成 5-已回退 6-已通过
     */
    interface TaskDealStatus {

        /**
         * 处理中
         */
        Integer PROCESSING = 1;

        /**
         * 已转派
         */
        Integer TRANSFERRED = 2;

        /**
         * 已终止
         */
        Integer TERMINATED = 3;


        /**
         * 已完成
         */
        Integer COMPLETED = 4;
        /**
         * 已回退
         */
        Integer ROLLEDBACK = 5;
        /**
         * 已通过
         */
        Integer PASSED = 6;
    }

    /**
     * 任务验收结果
     */
    interface TaskAcceptanceResult{
        // 通过
        Integer RESULT_PASS = 10438;
        //不通过
        Integer RESULT_UNPASS = 10440;
        //待评价
        Integer NO_EVALUATED = 10465;
    }

    /**
     * 终端系统
     */
    interface Terminal{
        // PC&小程序
        Integer SYSTEM = 1;
        // PDA -不校验密码
        Integer PDA = 2;
    }

    /**
     * 生产工序单据状态 1-计划  2-下达  3-挂起  4-结案  5-派工 6-待产 7-开工 8-完工
     */
    interface producePlanStatus {
        /**
         * 1-计划
         */
        Integer PLAN = 1;
        /**
         *  2-下达
         */
        Integer ISSUED = 2;
        /**
         * 3-挂起
         */
        Integer PUT_UP = 3;
        /**
         * 4-结案
         */
        Integer CLOSE_CASE = 4;
        /**
         * 5-派工
         */
        Integer SEND_ORDERS = 5;
        /**
         * 6-待产
         */
        Integer AWAITING_DELIVERY  = 6;
        /**
         * 7-开工
         */
        Integer START_WORK = 7;
        /**
         * 8-完工
         */
        Integer COMPLETE_WORK = 8;
        /**
         * 9-插单
         */
        Integer  ORDER_INSERTING  = 9;
        /**
         * 10-未派工
         */
        Integer UN_DISPATCHED  = 10;
        /**
         * 11-已派工
         */
        Integer DISPATCHED  = 11;
    }

    /**
     * 生产类型
     */
    interface produceType {
        //普通订单
        Integer ORDINARY_ORDER = 10348;
        //工序跟踪
        Integer PROCESS_TRACKING=10681;
        //项目制造
        Integer PROJECT_MANUFACTURING = 10315;
    }
    /**
     * 关闭状态(0未关闭/1关闭)
     */
    interface CloseStatus {
        Integer NOT_CLOSED = 0;
        Integer CLOSED = 1;
    }

    /**
     * 来料类型 0-外购;1-委外
     */
    interface IncomingMaterialType {

        Integer PURCHASE_FROM_OUTSIDE = 0;
        Integer BUSINESS_PROCESS_OUTSOURCING = 1;
    }

    /**
     * 盘点执行状态 (1未执行，2执行中，3执行完毕)
     */
    interface CheckStatus{
        /**
         * 未执行
         */
        Integer NOT_EXECUTED = 1;
        /**
         * 执行中
         */
        Integer EXECUTING = 2;
        /**
         * 执行完毕
         */
        Integer EXECUTION_IS_COMPLETE = 3;
    }

    /**
     * 库存类型
     */
    interface StockType{
        /**
         * 生产入库
         */
        Integer PRODUCE_INSTOCK = 10763;
        /**
         * 采购入库
         */
        Integer PURCHASE_INSTOCK = 10751;
    }

    interface ProductionTypeDict {
        //普通订单
        Integer ORDINARY_ORDER = 306;
        //工序跟踪
        Integer PROCESS_TRACKING = 235;
        //项目制造
        Integer PROJECT_MANUFACTURING = 289;
    }

    public static String MEASURE_POINT_LIST = "/apis/measurePoint/list";

    public static String OK_CODE = "0";

    public static String PROPERTIES_CODE = "code";

    public static String PROPERTIES_DATA = "data";

    public static String PROPERTIES_DATAS = "datas";

    public static String PROPERTIES_GATEWAY = "gatew";

    public static String PROPERTIES_GATE_WAY_NO = "gatewayNo";

    public static String PROPERTIES_SERIAL_NO = "serialNo";

    public static String PROPERTIES_USE_TYPE = "useTypeId";

    public static String COUNT_BOOLEAN = "157";

    public static String PROPERTIES_ID = "id";

    public static String CHARSET_UTF_8 = "UTF-8";

    public static String GATEWAY_ID = "gatewayId";

    /**
     * 监测点位
     */
   String MONITOR_POINT = "MONITOR_POINT:";

    /**
     * 允许离线时间
     */
    String POINT_OFFLINE_TIMEOUT = "POINT_OFFLINE_TIMEOUT";

    /**
     * mes对接的erp服务商：0-无；1-金蝶；2-金蝶云星空；3-u8
     */
    String ERP_CONNECT_TYPE = "ERP_CONNECT_TYPE";

    /**
     * 金蝶kis所在服务器ip+port
     */
    String ERP_CONNECT_URL = "ERP_CONNECT_URL";

    /**
     * 金蝶kis所在服务器ip+port
     */
    String TIME_FORMAT = "TIME_FORMAT";

    interface RuleType {
        //工序计划打印
        Integer PROCESS_PRINT = 10819;
        //包装打印
        Integer PACKAGE_PRINT = 10820;
    }

}
